Micron Document
🎖️GitЯра🎖️

Node / meshcore / MeshCore / files / src / MeshCore.h

Displaying Raw • Download

src/MeshCore.h HEAD (0679dbef) Text, 3.97 KB

Tff7b72#Tff7b72pragma once

Tff7b72#Tff7b72include T8b949e<stdint.h>
Tff7b72#Tff7b72include T8b949e<stddef.h>
Tff7b72#Tff7b72include T8b949e<math.h>

Tff7b72#Tff7b72define MAX_HASH_SIZE 8
Tff7b72#Tff7b72define PUB_KEY_SIZE 32
Tff7b72#Tff7b72define PRV_KEY_SIZE 64
Tff7b72#Tff7b72define SEED_SIZE 32
Tff7b72#Tff7b72define SIGNATURE_SIZE 64
Tff7b72#Tff7b72define MAX_ADVERT_DATA_SIZE 32
Tff7b72#Tff7b72define CIPHER_KEY_SIZE 16
Tff7b72#Tff7b72define CIPHER_BLOCK_SIZE 16

T8b949e// V1
Tff7b72#Tff7b72define CIPHER_MAC_SIZE 2
Tff7b72#Tff7b72define PATH_HASH_SIZE 1

Tff7b72#Tff7b72define MAX_PACKET_PAYLOAD 184
Tff7b72#Tff7b72define MAX_GROUP_DATA_LENGTH (MAX_PACKET_PAYLOAD - CIPHER_BLOCK_SIZE - 3)
Tff7b72#Tff7b72define MAX_PATH_SIZE 64
Tff7b72#Tff7b72define MAX_TRANS_UNIT 255

Tff7b72#Tff7b72if MESH_DEBUG && ARDUINO
Tff7b72#Tff7b72include T8b949e<Arduino.h>
Tff7b72#Tff7b72define MESH_DEBUG_PRINT(F, ...) Serial.printf("DEBUG: " F, ##__VA_ARGS__)
Tff7b72#Tff7b72define MESH_DEBUG_PRINTLN(F, ...) Serial.printf("DEBUG: " F "\n", ##__VA_ARGS__)
Tff7b72#Tff7b72else
Tff7b72#Tff7b72define MESH_DEBUG_PRINT(...) {}
Tff7b72#Tff7b72define MESH_DEBUG_PRINTLN(...) {}
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if BRIDGE_DEBUG && ARDUINO
Tff7b72#Tff7b72define BRIDGE_DEBUG_PRINTLN(F, ...) Serial.printf("%s BRIDGE: " F, getLogDateTime(), ##__VA_ARGS__)
Tff7b72#Tff7b72else
Tff7b72#Tff7b72define BRIDGE_DEBUG_PRINTLN(...) {}
Tff7b72#Tff7b72endif

Te6edf3namespace Te6edf3mesh Tb4b4b4{

Tff7b72#Tff7b72define BD_STARTUP_NORMAL 0 T8b949e// getStartupReason() codes
Tff7b72#Tff7b72define BD_STARTUP_RX_PACKET 1

Te6edf3class Te6edf3MainBoard Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3virtual Tffa657uint16_t Te6edf3getBattMilliVoltsTb4b4b4(Tb4b4b4) Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3virtual Tffa657float Te6edf3getMCUTemperatureTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3NANTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657bool Te6edf3setAdcMultiplierTb4b4b4(Tffa657float Te6edf3multiplierTb4b4b4) Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}Tb4b4b4;
Te6edf3virtual Tffa657float Te6edf3getAdcMultiplierTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return T79c0ff0.0fTb4b4b4; Tb4b4b4}
Te6edf3virtual Tff7b72const Tffa657charTff7b72* Te6edf3getManufacturerNameTb4b4b4(Tb4b4b4) Tff7b72const Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3virtual Tffa657void Te6edf3onBeforeTransmitTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Te6edf3virtual Tffa657void Te6edf3onAfterTransmitTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Te6edf3virtual Tffa657void Te6edf3rebootTb4b4b4(Tb4b4b4) Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3virtual Tffa657void Te6edf3powerOffTb4b4b4(Tb4b4b4) Tb4b4b4{ T8b949e/* no op */ Tb4b4b4}
T8b949e// Called by example setup() functions to signal that boot is complete.
T8b949e// Boards may override to stop a boot-indicator LED sequence or similar.
T8b949e// Default no-op: boards that don't care need not implement anything.
Te6edf3virtual Tffa657void Te6edf3onBootCompleteTb4b4b4(Tb4b4b4) Tb4b4b4{ T8b949e/* no op */ Tb4b4b4}
Te6edf3virtual Tffa657uint32_t Te6edf3getIRQGpioTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return T79c0ff-1Tb4b4b4; Tb4b4b4} T8b949e// not supported. Returns DIO1 (SX1262) and DIO0 (SX127x)
Te6edf3virtual Tffa657void Te6edf3sleepTb4b4b4(Tffa657uint32_t Te6edf3secsTb4b4b4) Tb4b4b4{ T8b949e/* no op */ Tb4b4b4}
Te6edf3virtual Tffa657uint32_t Te6edf3getGpioTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return T79c0ff0Tb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657void Te6edf3setGpioTb4b4b4(Tffa657uint32_t Te6edf3valuesTb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3virtual Tffa657uint8_t Te6edf3getStartupReasonTb4b4b4(Tb4b4b4) Tff7b72const Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3virtual Tffa657bool Te6edf3getBootloaderVersionTb4b4b4(Tffa657charTff7b72* Te6edf3versionTb4b4b4, Tffa657size_t Te6edf3max_lenTb4b4b4) Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657bool Te6edf3startOTAUpdateTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3idTb4b4b4, Tffa657char Te6edf3replyTb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4} T8b949e// not supported
Te6edf3virtual Tffa657bool Te6edf3setLoRaFemLnaEnabledTb4b4b4(Tffa657bool Te6edf3enableTb4b4b4) Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657bool Te6edf3canControlLoRaFemLnaTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657bool Te6edf3isLoRaFemLnaEnabledTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
T8b949e// Software-selectable external FEM transmit gain. This is not a PA power switch.
Te6edf3virtual Tffa657bool Te6edf3setLoRaFemPaGainEnabledTb4b4b4(Tffa657bool Te6edf3enableTb4b4b4) Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657bool Te6edf3canControlLoRaFemPaGainTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657bool Te6edf3isLoRaFemPaGainEnabledTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}

T8b949e// Power management interface (boards with power management override these)
Te6edf3virtual Tffa657bool Te6edf3isExternalPoweredTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657uint16_t Te6edf3getBootVoltageTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return T79c0ff0Tb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657uint32_t Te6edf3getResetReasonTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return T79c0ff0Tb4b4b4; Tb4b4b4}
Te6edf3virtual Tff7b72const Tffa657charTff7b72* Te6edf3getResetReasonStringTb4b4b4(Tffa657uint32_t Te6edf3reasonTb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff"Ta5d6ffNot availableTa5d6ff"Tb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657uint8_t Te6edf3getShutdownReasonTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return T79c0ff0Tb4b4b4; Tb4b4b4}
Te6edf3virtual Tff7b72const Tffa657charTff7b72* Te6edf3getShutdownReasonStringTb4b4b4(Tffa657uint8_t Te6edf3reasonTb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff"Ta5d6ffNot availableTa5d6ff"Tb4b4b4; Tb4b4b4}
Tb4b4b4}Tb4b4b4;

T8b949e/**
* An abstraction of the device's Realtime Clock.
*/
Te6edf3class Te6edf3RTCClock Tb4b4b4{
Tffa657uint32_t Te6edf3last_uniqueTb4b4b4;
Te6edf3protectedTff7b72:
Te6edf3RTCClockTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3last_unique Tff7b72= T79c0ff0Tb4b4b4; Tb4b4b4}

Te6edf3publicTff7b72:
T8b949e/**
* \returns the current time. in UNIX epoch seconds.
*/
Te6edf3virtual Tffa657uint32_t Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4) Tff7b72= T79c0ff0Tb4b4b4;

T8b949e/**
* \param time current time in UNIX epoch seconds.
*/
Te6edf3virtual Tffa657void Te6edf3setCurrentTimeTb4b4b4(Tffa657uint32_t Te6edf3timeTb4b4b4) Tff7b72= T79c0ff0Tb4b4b4;

T8b949e/**
* override in classes that need to periodically update internal state
*/
Te6edf3virtual Tffa657void Te6edf3tickTb4b4b4(Tb4b4b4) Tb4b4b4{ T8b949e/* no op */Tb4b4b4}

Tffa657uint32_t Te6edf3getCurrentTimeUniqueTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3t Tff7b72= Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72<Tff7b72= Te6edf3last_uniqueTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72+Tff7b72+Te6edf3last_uniqueTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3last_unique Tff7b72= Te6edf3tTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;

Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.07s